package com.molichuxing.gateway.bff.car.services;

import com.molichuxing.framework.dto.Paged;
import com.molichuxing.gateway.bff.car.entity.request.create.CarLicencePlateCreateVo;
import com.molichuxing.gateway.bff.car.entity.request.create.YearlyInspectionCreateVo;
import com.molichuxing.gateway.bff.car.entity.request.modify.CarLicencePlateModifyVo;
import com.molichuxing.gateway.bff.car.entity.request.modify.YearlyInspectionModifyVo;
import com.molichuxing.gateway.bff.car.entity.response.CarLicencePlateDetailVo;
import com.molichuxing.gateway.bff.car.entity.response.CarYearlyInspectVo;
import com.molichuxing.gateway.bff.car.entity.response.YearlyInspectionLogVo;
import com.molichuxing.gateway.bff.car.entity.response.YearlyInspectionVo;
import com.molichuxing.gateway.utils.entity.UserEntity;
import com.molichuxing.services.business.dto.response.CarYearlyInspectDto;
import com.molichuxing.services.infrastructure.dto.request.create.YearlyInspectionCreateDto;
import com.molichuxing.services.infrastructure.dto.request.modify.YearlyInspectionModifyDto;
import com.molichuxing.services.infrastructure.dto.response.YearlyInspectionDto;
import com.molichuxing.services.property.CarYearlyInspectStatusEnum;

import java.util.List;
import java.util.Map;

/**
 * 年检BFF
 * @author xuelin yi
 */
public interface YearlyInspectBffService {

	/**
	 * 根据查询条件获取年检列表信息
	 * @param yearlyInspectStatus
	 * @param licencePlate
	 * @param vin
	 * @param addressType
	 * @param addressId
	 * @param inspectStartDate
	 * @param inspectEndDate
	 * @param pageNum
	 * @param pageSize
	 * @return
	 */
	public Paged<CarYearlyInspectVo> getYearlyInspect(int yearlyInspectStatus, String licencePlate, String vin, Integer addressType, Integer addressId
			, String inspectStartDate, String inspectEndDate, Integer handleStatus,String sortName, String sortWay,  Integer pageNum, Integer pageSize);

	/**
	 * 根据车辆id获取年检信息
	 * @param carId
	 * @return
	 */
	public YearlyInspectionVo getYearlyInspectionByCarId(Integer carId);

	/**
	 * 编辑年检信息
	 * @param modifyDto
	 * @return
	 */
	public Boolean modifyYearlyInspection(YearlyInspectionModifyVo modifyDto) throws Exception;

	/**
	 * 年检记录
	 * @param carId
	 * @return
	 */
	public List<YearlyInspectionLogVo> getYearlyInspectionLog(Integer carId);

	/**
	 * 年检导出
	 * @param yearlyInspectStatus
	 * @param licencePlate
	 * @param vin
	 * @param addressType
	 * @param addressId
	 * @param inspectStartDate
	 * @param inspectEndDate
	 * @return
	 */
	public List<CarYearlyInspectVo> getYearlyInspectDownload(String inspectionIdList,int yearlyInspectStatus, String licencePlate, String vin, Integer addressType, Integer addressId, String inspectStartDate, String inspectEndDate)throws Exception;

	public long getYearlyInspectDownloadCount(String inspectionIdList,int yearlyInspectStatus, String licencePlate, String vin, Integer addressType, Integer addressId, String inspectStartDate, String inspectEndDate)throws Exception;

	/**
	 * 年检导出
	 * @param inspectionIdList
	 * @param yearlyInspectStatus
	 * @param licencePlate
	 * @param vin
	 * @param addressType
	 * @param addressId
	 * @param inspectStartDate
	 * @param inspectEndDate
	 * @param user
	 * @return
	 */
	public Boolean getYearlyInspectDownloadEmail(String inspectionIdList,int yearlyInspectStatus, String licencePlate, String vin, Integer addressType, Integer addressId, String inspectStartDate, String inspectEndDate,
												 UserEntity user)throws Exception;
}
